Given a binary array nums
and an integer goal
, return the number of non-empty subarrays with a sumgoal
.
A subarray is a contiguous part of the array.
Input: nums = [1,0,1,0,1], goal = 2 Output: 4 Explanation: The 4 subarrays are bolded and underlined below: [1,0,1,0,1] [1,0,1,0,1] [1,0,1,0,1] [1,0,1,0,1]
Input: nums = [0,0,0,0,0], goal = 0 Output: 15
1 <= nums.length <= 3 * 104
nums[i]
is either0
or1
.0 <= goal <= nums.length
use std::collections::HashMap;implSolution{pubfnnum_subarrays_with_sum(nums:Vec<i32>,goal:i32) -> i32{letmut count = HashMap::new();letmut sum = 0;letmut ret = 0; count.insert(0,1);for num in nums { sum += num; ret += count.get(&(sum - goal)).unwrap_or(&0);*count.entry(sum).or_insert(0) += 1;} ret }}